package com.meeting.meetingroom_api.constants;

/**
 * 错误消息常量类
 * 集中管理所有中文错误消息
 */
public class ErrorMessages {
    
    // 用户相关错误消息
    public static final String USERNAME_ALREADY_EXISTS = "用户名已存在: %s";
    public static final String ONLY_ADMINS_CAN_APPROVE_CUSTOMERS = "只有管理员可以审批客户";
    public static final String USER_NOT_FOUND = "找不到用户，ID: %s";
    public static final String USER_NOT_CUSTOMER = "用户不是客户角色";
    public static final String APPROVER_MUST_BE_ADMIN = "审批人必须是管理员";
    public static final String ONLY_ADMINS_CAN_CHANGE_ACCOUNT_STATUS = "只有管理员可以修改账户状态";
    public static final String INVALID_ACCOUNT_STATUS = "无效的账户状态: %s";
    public static final String REVIEWER_MUST_BE_ADMIN = "审核人必须是管理员";
    public static final String CUSTOMER_REGISTRATION_NOT_PENDING = "客户注册状态不是待审批";
    public static final String USER_NOT_EMPLOYEE = "用户不是员工角色";
    public static final String EMPLOYEE_NOT_PENDING_APPROVAL = "员工注册状态不是待审批";
    
    // 支付相关错误消息
    public static final String PAYMENT_RECORD_ALREADY_EXISTS = "预订ID %s 的支付记录已存在";
    public static final String CUSTOMER_NOT_OWN_BOOKING = "该预订不属于此客户";
    public static final String BOOKING_NOT_PENDING_PAYMENT = "预订状态不是待支付。当前状态: %s";
    public static final String PAYMENT_DEADLINE_PASSED = "预订ID %s 的支付期限已过，预订已取消";
    public static final String PAYMENT_ALREADY_SUCCESSFUL = "该预订的支付已成功处理";
    public static final String INVALID_ORDER_ID_FORMAT = "通知中的订单ID格式无效: %s";
    public static final String PAYMENT_NOT_REFUNDABLE = "支付状态不可退款。当前状态: %s";
    
    // 会议室相关错误消息
    public static final String MEETING_ROOM_NAME_EXISTS = "会议室名称 '%s' 已存在";
    public static final String ROOM_STATUS_NOT_ALLOW_MODIFY = "会议室状态：%s 不允许被修改";
    public static final String ROOM_NAME_CONFLICT = "名称冲突: '%s' 已存在";
    public static final String CANNOT_DELETE_ROOM_WITH_STATUS = "无法删除状态为 %s 的会议室";
    public static final String MEETING_ROOM_ALREADY_DELETED = "会议室已被删除";
    public static final String MEETING_ROOM_NOT_DELETED = "会议室未被删除，无法恢复";
    public static final String CANNOT_DELETE_ROOM_WITH_ACTIVE_BOOKINGS = "无法删除有活跃订单的会议室";
    public static final String MEETING_ROOM_NOT_FOUND = "找不到会议室，ID: %s";
    
    // 预订相关错误消息
    public static final String ONLY_CUSTOMERS_CAN_CREATE_BOOKINGS = "只有客户可以创建预订";
    public static final String ATTENDEES_EXCEED_CAPACITY = "参会人数 (%d) 超过会议室容量 (%d)";
    public static final String TIME_SLOT_NOT_AVAILABLE = "所选时间段不可用，会议室: %s";
    public static final String ROOM_UNDER_MAINTENANCE = "会议室 '%s' 正在维护中";
    
    // 维护退款相关错误消息
    public static final String MAINTENANCE_REFUND_NOT_CONFIRMED = "只能为已确认的预订处理维护退款";
    public static final String ROOM_NOT_UNDER_MAINTENANCE = "会议室不在维护状态，无需退款";
    public static final String REFUND_TIME_NOT_MET = "距离会议开始时间超过24小时，暂不需要退款";
    public static final String PAYMENT_NOT_FOUND = "找不到预订对应的支付记录";
    public static final String PAYMENT_STATUS_INCORRECT = "支付状态不正确，无法退款";
    
    // 维护状态保护相关错误消息
    public static final String ROOM_IN_MAINTENANCE_CANNOT_CHANGE_STATUS = "会议室正在维护中，请先完成维护再修改状态";
    public static final String ROOM_IN_MAINTENANCE_CANNOT_CHECKIN = "会议室正在维护中，无法入场";
    public static final String BOOKING_DURATION_MIN_ONE_HOUR = "预订时长必须至少1小时";
    public static final String START_END_TIMES_CANNOT_BE_NULL = "开始时间和结束时间不能为空";
    public static final String END_TIME_MUST_AFTER_START = "结束时间必须晚于开始时间";
    public static final String BOOKING_TIMES_MUST_ON_HOUR = "预订时间必须为整点（例如：09:00, 10:00）";
    public static final String MINIMUM_BOOKING_DURATION = "最小预订时长为1小时";
    public static final String BOOKING_TIMES_WITHIN_OPERATING_HOURS = "预订时间必须在会议室开放时间内 (%s - %s)";
    public static final String CANNOT_BOOK_PAST_TIME = "不能预订过去的时间段";
    public static final String BOOKING_ADVANCE_LIMIT = "预订最多提前 %d 天";
    public static final String ONLY_EMPLOYEES_ADMINS_CAN_UPDATE_STATUS = "只有员工或管理员可以更新预订状态";
    public static final String ONLY_PENDING_PAYMENT_CAN_BE_CANCELLED = "只有待支付的预订可以被客户取消";
    
    // 取消相关错误消息
    public static final String INVALID_CANCELLATION_STATUS = "无效的取消状态: %s";
    
    // 查询相关错误消息
    public static final String UNSUPPORTED_STATUS_LIST_TYPE = "不支持的状态列表类型：%s";
    public static final String UNSUPPORTED_STATUS_PARAM_TYPE = "不支持的状态参数类型：%s";
} 